const WebSocket = require("ws");

class QQBot {
	constructor(cqurl) {
		const ws = (this.ws = new WebSocket(cqurl, {
			perMessageDeflate: false,
		}));
		/**
		 *
		 * @param {cq.Message} msg
		 */
		let onmsg = (msg) => {
			if (msg.meta_event_type == "heartbeat") {
				this.heartbeat(msg);
			} else if (msg.meta_event_type == "lifecycle") {
				this.lifecycle(msg);
			} else if (msg.message_type == "group") {
				this.group(msg);
			} else if (msg.message_type == "private") {
				this.friend(msg);
			} else if (msg.notice_type == "group_decrease" || msg.notice_type == "group_increase" || msg.notice_type == "group_ban" || msg.notice_type == "group_recall") {
				this.groupEvent(msg);
			} else {
				console.log(msg);
			}
		};

		ws.on("message", function (data) {
			onmsg(JSON.parse(data));
		});
	}
	/**
	 *
	 * @param {cq.HeartbeatMsg} msg
	 */
	heartbeat(msg) {}
	/**
	 *
	 * @param {cq.LifecycleMsg} msg
	 */
	lifecycle(msg) {}
	/**
	 * @param {cq.GroupMsg} msg
	 */
	group(msg) {
		console.log(msg.group_id, msg.message);
	}
	/**
	 * @param {cq.FriendMsg} msg
	 */
	friend(msg) {
		console.log(msg.user_id, msg.message);
	}
	/**
	 * @param {cq.GroupEventMsg} msg
	 */
	groupEvent(msg) {}
}

module.exports = QQBot;
